/*
 * @Author: your name
 * @Date: 2021-10-16 10:20:48
 * @LastEditTime: 2021-10-16 10:45:59
 * @LastEditors: Please set LastEditors
 * @Description: 我有点害怕,却又不想前进
 * @FilePath: \luogu\动态规划\模板问题\复习代码\1510.cpp
 */
#include<iostream>
#include<algorithm>
using namespace std;

//石头i 体力j 空间f
int f[10010][10010];
//体力i
int ff[10010];

int main(){
    //空间 石头数 体力
    //在剩余的体力值尽可能拿到高的空间
    int v,n,c;
    cin >> v >> n >> c;
    for(int i=1; i<=n; i++){
        int v1,c1;
        cin >> v1 >> c1;
        for(int j=0; j<=c; j++){
            f[i][j] = f[i-1][j];
            //搬 i 或 不搬
            if(j >= c1) f[i][j] = max(f[i-1][j],f[i-1][j-c1]+v1);
        }

        for(int j=c; j>=c1; j--){
            ff[j] = max(ff[j],ff[j-c1]+v1);
        }
    }

    //筛选最小体力f
    if(f[n][c] < v){
        cout << "Impossible" << endl;
    }
    else{
        for(int i=c; i>=0; i--){
            if(f[n][i]<v){
                cout << c-i-1 << endl;
                break;
            }
        }
    }
    // 筛选最小体力ff
    if(ff[c] < v){
        cout << "Impossible" << endl;
    }else{
        for(int i=c; i>=0; i--){
            if(ff[i] < v){
                cout << c-i-1 << endl;
                break;
            }
        }
    }
    return 0;
}
